﻿Imports DAL
Imports BE.BE
Imports BL.BL

Namespace BL

    Public Class Bitacora_BL

        Shared Function listarTodos() As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarTodos
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Function listarIntervalo(ByVal pfechainicio As String, ByVal pfechafin As String) As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarIntervalo(pfechainicio, pfechafin)
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Function listarPorUsuario(ByVal pusuario As String) As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarPorUsuario(pusuario)
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Function listarPorCriticidad(ByVal pcriticidad As Integer) As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarPorCriticidad(pcriticidad)
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Sub depurarBitacora(ByVal pFechaInicio As String, ByVal pFechaFin As String)
            DAL_Bitacora.depurarBitacora(pFechaInicio, pFechaFin)
        End Sub


        Shared Function listarCombinadoRangoFechasUsuario(ByVal pFechaInicioFiltrar As String, ByVal pFechaFinalFiltrar As String, ByVal pUsuario As String) As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarCombinadoRangoFechasUsuario(pFechaInicioFiltrar, pFechaFinalFiltrar, pUsuario)
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Function listarCombinadoRangoFechasCriticidad(ByVal pFechaInicioFiltrar As String, ByVal pFechaFinalFiltrar As String, ByVal pbCriticidad As Integer) As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarCombinadoRangoFechasCriticidad(pFechaInicioFiltrar, pFechaFinalFiltrar, pbCriticidad)
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Function listarCombinadoUsuarioCriticidad(ByVal pUsuario As String, ByVal pCriticidad As Integer) As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarCombinadoUsuarioCriticidad(pUsuario, pCriticidad)
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Function listarCombinadoRangoFechasUsuarioCriticidad(ByVal pFechaInicioFiltrar As String, ByVal pFechaFinalFiltrar As String, ByVal pUsuario As String, ByVal pCriticidad As Integer) As List(Of Bitacora_BE)
            Dim listado As New List(Of Bitacora_BE)
            For Each bita As Bitacora_BE In DAL_Bitacora.listarCombinadoRangoFechasUsuarioCriticidad(pFechaInicioFiltrar, pFechaFinalFiltrar, pUsuario, pCriticidad)
                bita.Descripcion = Helper_BL.DesEncriptarAES(bita.Descripcion)
                Dim usr As New Usuario_BE
                usr = Usuario_BL.traerUsuarioPorIdActivosYBorrados(bita.IdUser)
                bita.Nick = usr.nick
                listado.Add(bita)
            Next
            Return listado
        End Function


        Shared Sub grabarEnBitacora(pUsuario As Usuario_BE, pMovimiento As TipoMovimiento_BE)
            Dim DVH As Integer = 0
            Dim DVV As Integer = 0
            Dim cadenastr As String = ""
            'çalculamos DVH.
            cadenastr += cadenastr + pUsuario.id.ToString
            Dim fechatiempo As DateTime = DateTime.Now
            cadenastr += fechatiempo.ToString
            'encriptamos la descripción del movimiento.
            pMovimiento.mDescripcion = Helper_BL.EncriptarAES(pMovimiento.mDescripcion)
            cadenastr += pMovimiento.mDescripcion.ToString
            cadenastr += pMovimiento.mCriticidad.ToString
            DVH = Helper_BL.CalcularDVH(cadenastr)
            Try
                DAL_Bitacora.GrabarEnBitacora(pUsuario.id, pMovimiento, fechatiempo, DVH)
                'actualizo dvv en la tabla bitacora.
                DVV = Helper_BL.CalcularDVV("bitacora")
                Helper_BL.setearDVV("bitacora", DVV)
            Catch ex As Exception
                Throw ex
            End Try
        End Sub

        Shared Sub grabarEnBitacoraCasoFallaIntegridad(pUsuario As Usuario_BE, pMovimiento As TipoMovimiento_BE)
            Dim DVH As Integer = 0
            Dim cadenastr As String = ""
            'çalculamos DVH.
            cadenastr += cadenastr + pUsuario.id.ToString
            Dim fechatiempo As DateTime = DateTime.Now
            cadenastr += fechatiempo.ToString
            'encriptamos la descripción del movimiento.
            pMovimiento.mDescripcion = Helper_BL.EncriptarAES(pMovimiento.mDescripcion)
            cadenastr += pMovimiento.mDescripcion.ToString
            cadenastr += pMovimiento.mCriticidad.ToString
            DVH = Helper_BL.CalcularDVH(cadenastr)
            Try
                DAL_Bitacora.GrabarEnBitacora(pUsuario.id, pMovimiento, fechatiempo, DVH)
                'no actualizo dvv en la tabla bitacora. para no perder los casos dónde se agreguen o quiten registros de la tabla.
            Catch ex As Exception
                Throw ex
            End Try
        End Sub



    End Class


End Namespace